package com.shujia.day11;

public class Demo04Exception {
    public static void main(String[] args) {
        /*
            异常种类：
                1.编译时期异常
                    ① 代码语法错误 代码的位置存在问题
                    ② 代码中的一些类型，存在不匹配
                 编译时期的异常，可以通过当前IDEA开发工具来展示
                2.运行时期的异常
                    ① ArithmeticException 除0错误  / by zero
                    ② ArrayIndexOutOfBoundsException 数组访问越界
                    ③ ConcurrentModificationException 迭代器的数据长度和数组的长度不一致导致的
                    ④ ClassCastException 类型转换错误 一般发生在对象强制类型转换的情况下
                    ⑤ NullPointerException 空指针异常 对对象进行调用时，其内存地址指向为空
                    注意：特点属于 RuntimeException 下的一个子类
                        在运行时会报错，报错后整个程序停止运行
                    如果当程序出现问题，需要对当前的错误进行捕获处理
                        比如对于 NullPointerException 异常，如果出现，那么可以对其进行重新创建对象
                        继续通过对象的方法进行调用

         */
//        System.out.println(1/0);

//        int[] ints = new int[3];
//        System.out.println(ints[3]);

        Exp exp = null;
//        exp.printInfo();
        // TODO 如果当exp的变量，指向的是为null,那么可以调用其 new 方法重新创建一个对象，赋予给变量
        if (exp == null) {
            exp = new Exp();
        }
        exp.printInfo();
        // TODO 上述的方式属于，问题错误没有发生，但是可以提前进行预防
        //      对于已经发生的错误，如果要进行处理就需要使用 try .. catch 方式进行捕获



    }

//    new Student();
}

class Exp {
    public void printInfo() {
        System.out.println("这是Exp类中的printInfo方法...");
    }
}